//class Solution {
//public:
//    int StrToInt(string str) {
//        long long count = 0, n = 0;
//        if (str[0] == '-') {
//            n = 1;
//        }
//        for (auto e : str) {
//            if ((e < '0' || e > '9') && (e != '+' && e != '-'))
//                return 0;
//            if (n == 0 && (e >= '0' && e <= '9')) {
//                count += e - 48;
//                count *= 10;
//            }
//            else if (n == 1 && (e >= '0' && e <= '9')) {
//                count -= e - 48;
//                count *= 10;
//            }
//        }
//        count /= 10;
//        return count;
//    }
//};

//class Solution {
//public:
//    void reverseString(vector<char>& s) {
//        int begin = 0, end = s.size() - 1;
//        while (begin < end) {
//            swap(s[begin], s[end]);
//            begin++;
//            end--;
//        }
//    }
//};

//class Solution {
//public:
//    int firstUniqChar(string s) {
//        int n = 0;
//        for (int i = 0; i < s.size(); i++) {
//            size_t pos1 = s.find(s[i]);
//            size_t pos2 = s.rfind(s[i]);
//            if (pos1 == pos2) {
//                return i;
//            }
//        }
//        return -1;
//    }
//};

//class Solution {
//public:
//    string addStrings(string num1, string num2) {
//        if (num2.size() > num1.size()) {
//            swap(num1, num2);
//        }
//        int MaxSize = num1.size();
//        int MinSize = num2.size();
//        for (int j = 1; j <= MinSize; j++) {
//            num1[num1.size() - j] += num2[num2.size() - j] - 48;
//        }
//        for (int i = MaxSize - 1; i >= 0; i--) {
//            if (num1[i] > '9' && i != 0) {
//                num1[i] -= 10;
//                num1[i - 1]++;
//            }
//        }
//        if (num1[0] > '9') {
//            string num3("1");
//            num1[0] -= 10;
//            num3 += num1;
//            return num3;
//        }
//        return num1;
//    }
//};

//class Solution {
//public:
//    bool isPalindrome(string s) {
//        string str;
//        for (int i = 0; i < s.size(); i++) {
//            if (s[i] >= 'A' && s[i] <= 'Z') {
//                str += s[i] + 32;
//            }
//            if (s[i] >= 'a' && s[i] <= 'z') {
//                str += s[i];
//            }
//            if (s[i] >= '0' && s[i] <= '9') {
//                str += s[i];
//            }
//        }
//        int begin = 0, end = str.size() - 1;
//        while (begin < end) {
//            if (str[begin] != str[end]) {
//                return false;
//            }
//            begin++;
//            end--;
//        }
//        return true;
//    }
//};

//#include <algorithm>
//class Solution {
//public:
//    string reverseStr(string s, int k) {
//        if (k <= 0 || s.empty()) {
//            return s;
//        }
//        if (k >= s.size()) {
//            reverse(s.begin(), s.end());
//            return s;
//        }
//        int n = 0;
//        while (s.size() - n >= 2 * k)
//        {
//            reverse(s.begin() + n, s.begin() + n + k);
//            n = n + 2 * k;
//        }
//        if (s.size() - n > 0 && s.size() < n + k) {
//            reverse(s.begin() + n, s.end());
//        }
//        else if (s.size() >= n + k) {
//            reverse(s.begin() + n, s.begin() + n + k);
//        }
//        return s;
//    }
//};